]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
build: Pre-generate man pages at dist time
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 15 Dec 2020 18:23:14 +0000 (19:23 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 28 Dec 2020 01:25:24 +0000 (02:25 +0100)
The man pages don't change very often, but draw in both docbook and
asciidoc. The latter is particularly problematic, as some distros
still ship only a python2 version of the tool.

Address this by generating the man pages at dist time, and including
the result in the tarball.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1553>

meson.build
meson/generate-manpages.py [new file with mode: 0644]
subprojects/extensions-tool/meson.build

index 71b3ca47179408288b4268b82483c1b1712813d0..4c913ff8634beba44e4ce7cf3d7be081650cc5c6 100644 (file)
@@ -37,6 +37,7 @@ gst_req = '>= 0.11.92'
 nm_req = '>= 1.10.4'
 secret_req = '>= 0.18'
 
+fs = import('fs')
 gnome = import('gnome')
 i18n  = import('i18n')
 
@@ -126,8 +127,12 @@ else
 endif
 
 if get_option('man')
-  a2x = find_program('a2x')
-  subdir('man')
+  if fs.exists('man/gnome-shell.1')
+    install_man('man/gnome-shell.1')
+  else
+    a2x = find_program('a2x')
+    subdir('man')
+  endif
 endif
 
 mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
@@ -287,6 +292,7 @@ if get_option('gtk_doc')
 endif
 
 meson.add_install_script('meson/postinstall.py')
+meson.add_dist_script('meson/generate-manpages.py')
 
 summary_options = {
   'networkmanager': get_option('networkmanager'),
diff --git a/meson/generate-manpages.py b/meson/generate-manpages.py
new file mode 100644 (file)
index 0000000..ce2ca28
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+import os
+from pathlib import PurePath
+from asciidocapi import AsciiDocAPI
+
+man_pages = [
+    'man/gnome-shell.1',
+    'subprojects/extensions-tool/man/gnome-extensions.1',
+]
+
+sourceroot = os.environ.get('MESON_SOURCE_ROOT')
+distroot = os.environ.get('MESON_DIST_ROOT')
+
+asciidoc = AsciiDocAPI()
+
+for man_page in man_pages:
+    page_path = PurePath(man_page)
+    src = PurePath(sourceroot, page_path.with_suffix('.txt'))
+    dst = PurePath(distroot, page_path)
+    stylesheet = src.with_name('stylesheet.xsl')
+
+    asciidoc.options('--xsl-file', os.fspath(stylesheet))
+    asciidoc.execute(os.fspath(src), outfile=os.fspath(dst))
index 5460f626d95f91876fb1852e06765a82909651e2..18a38a02340e42e6a226d1a80b8a5aef5283b0ab 100644 (file)
@@ -6,6 +6,7 @@ project('gnome-extensions-tool', 'c',
 
 gio_req = '>= 2.56.0'
 
+fs = import('fs')
 gnome = import('gnome')
 i18n  = import('i18n')
 
@@ -46,9 +47,12 @@ if bash_completion.found()
 endif
 
 if get_option('man')
-  a2x = find_program('a2x')
-
-  subdir('man')
+  if fs.exists('man/gnome-extensions.1')
+    install_man('man/gnome-extensions.1')
+  else
+    a2x = find_program('a2x')
+    subdir('man')
+  endif
 endif
 
 if not meson.is_subproject()